package com.safe.ele.service.impl;//
//                            _ooOoo_  
//                           o8888888o  
//                           88" . "88  
//                           (| -_- |)  
//                            O\ = /O  
//                        ____/`---'\____  
//                      .   ' \\| |// `.  
//                       / \\||| : |||// \  
//                     / _||||| -:- |||||- \  
//                       | | \\\ - /// | |  
//                     | \_| ''\---/'' | |  
//                      \ .-\__ `-` ___/-. /  
//                   ___`. .' /--.--\ `. . __  
//                ."" '< `.___\_<|>_/___.' >'"".  
//               | | : `- \`.;`\ _ /`;.`/ - ` : | |  
//                 \ \ `-. \_ __\ /__ _/ .-` / /  
//         ======`-.____`-.___\_____/___.-`____.-'======  
//                            `=---='  
//  
//         .............................................  
//                  佛祖镇楼            BUG辟易
import com.safe.ele.config.RedisKeyConfig;
import com.safe.ele.config.SystemConfig;
import com.safe.ele.dao.ISmslogDao;
import com.safe.ele.dto.SmsCodeDto;
import com.safe.ele.entity.ISmslog;
import com.safe.ele.service.intf.ISmslogService;
import com.safe.ele.util.AliSmsUtil;
import com.safe.ele.util.NumRandomUtil;
import com.safe.ele.util.RedissonUtil;
import com.safe.ele.util.StringUtil;
import com.safe.ele.vo.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 佛曰：笑着面对，不去埋怨。悠然，随心，随性，随缘。注定让一生改变的，只在百年后，那一朵花开的时间。
 * 《庄子·知北游》：“人生天地之间；若白驹之过隙；忽然而已。”
 * 我说：一切都会过去的，一切都会到来的，在时间面前我们都是弟弟！！！
 * 死循环-----死循环-----死循环---2020.12.18
 * 一鼓作气，再而衰，三而竭！-----2020.12.28
 *
 * @author 张涂涂
 * @date:Created in 2021/1/13 16:21
 */
@Service
public class ISmslogServiceImpl implements ISmslogService {
    @Autowired
    private ISmslogDao iSmslogDao;

    @Override
    public R sendCode(String phone) {
        //发送的手机号是不为空？
        if (StringUtil.isNoEmpty(phone)) {

            //生成6位的验证码
            int code = NumRandomUtil.createRandomNum(SystemConfig.SMS_CODELEN);
            //发送验证码
            if (AliSmsUtil.sendSmsCode(phone,code)) {
                System.out.println("----------------");
                RedissonUtil.setStr(RedisKeyConfig.SMS_CODE + phone, code, RedisKeyConfig.SMS_CODE_TIMES);
                //记录数据到数据库---为什么不放在Redis
//                smslogDao.insert(new Smslog(phone, SystemConfig.SMS_CODEADD, phone + "注册新用户，短信验证"));
//               iSmslogDao.addISmslog(new ISmslog(phone, SystemConfig.SMS_CODEADD, phone + "注册新用户，短信验证"));
                return R.ok();
            }
        }
        return R.fail();
    }

    @Override
    public R checkCode(SmsCodeDto dto) {
        if(dto!=null){
            if (StringUtil.isNoEmpty(dto.getPhone()) && dto.getCode() > 0) {
                String key=RedisKeyConfig.SMS_CODE+dto.getPhone();
                //验证Redis key是否存在
                if(RedissonUtil.isHave(key)){
                    //校验是否正确
                    if(dto.getCode()== Integer.parseInt(RedissonUtil.getStr(key))){
                        return R.ok();
                    }
                }
            }
        }
        return R.fail();
    }
}
